IMoniker::Reduce. Questo metodo restituisce MK_S_REDUCED_TO_SELF e
passa di nuovo lo stesso moniker.
IMoniker::ComposeWith. Se pmkRight Φ un anti-moniker, il moniker
restituito Φ NULL. Se pmkRight Φ a struttura mista e il primo
componente da sinistra Φ un anti-moniker, il moniker restituito Φ a
struttura mista e senza anti-moniker. Se pmkRight non Φ nΘ un
anti-moniker nΘ un moniker a struttura mista e il primo componente da
sinistra Φ un anti-moniker, il metodo verifica il parametro
fOnlyIfNotGeneric. Se Φ FALSE, il metodo combina i due moniker in un
moniker generico a struttura mista; se Φ TRUE, il metodo imposta
*ppmkComposite su NULL e restituisce MK_E_NEEDGENERIC.
IMoniker::Enum. Questo metodo restituisce il valore S_OK e imposta
ppenumMoniker su NULL.
IMoniker::IsEqual. Questo metodo restituisce il valore S_OK se
*pmkOther Φ un moniker OBJREF e i percorsi per entrambi i moniker sono
identici (verificabile con un confronto che non consideri le maiuscole
e le minuscole). In caso contrario, il metodo restituisce il valore
S_FALSE.
IMoniker::Hash. Questo metodo calcola un valore hash per il moniker.
IMoniker::IsRunning. PoichΘ i moniker OBJREF rappresentano un'istanza
di oggetti in esecuzione, questo metodo restituisce il valore TRUE, a
meno che l'oggetto non sia pi∙ in esecuzione perchΘ non Φ riuscita una
chiamata recente. Il metodo ignora il parametro pmkToLeft.
IMoniker::GetTimeOfLastChange. Questo metodo restituisce il valore
E_NOTIMPL.
IMoniker::Inverse. Questo metodo restituisce un anti-moniker, ovvero
il risultato di una chiamata CreateAntiMoniker.
IMoniker::CommonPrefixWith. Se due moniker sono uguali, questo metodo
restituisce MK_S_US e imposta *ppmkPrefix su NULL. Se uno dei due
moniker non Φ un moniker OBJREF, il metodo passa entrambi i moniker
alla funzione MonikerCommonPrefixWith. Questa funzione gestisce
correttamente i casi in cui uno dei moniker Φ a struttura mista
generica.
Se non Φ disponibile un prefisso comune, il metodo restituisce MK_E_.
IMoniker::RelativePathTo. Questo metodo restituisce il valore
E_NOTIMPL. IMoniker::GetDisplayName. Questo metodo ottiene la stringa
visualizzata per il moniker OBJREF. Questa Φ una stringa con codifica
a 64 bit che racchiude l'ubicazione del computer, il termine di
trasmissione del processo e l'ID del puntatore all'interfaccia (IPID)
dell'oggetto in esecuzione. Per garantire una compatibilitα futura, la
stringa visualizzata Φ limitata a quei caratteri che possono essere
specificati come parte di un URL.
IMoniker::ParseDisplayName. Se il parametro pmkToLeft non Φ NULL,
questo metodo restituisce MK_E_SYNTAX.
IMoniker::IsSystemMoniker. Questo metodo restituisce il valore S_OK e
passa di nuovo MKSYS_OBJREFMONIKER.
Supporto per tipi di dati VB6.0
Visual Basic« 6.0 consente alle varianti Visual Basic di contenere
strutture di dati definite dall'utente. Ora DCOM95 supporta la
gestione remota di queste varianti.
II. Soluzioni ai problemi
-------------------------
Condizione di competizione durante lo scaricamento di pi∙ moduli
Nelle precedenti versioni di DCOM95, si verificava una violazione di
accesso quando venivano scaricati contemporaneamente pi∙ moduli. La
violazione dipendeva dall'ordine in cui venivano scaricati i moduli.
Questo errore Φ stato corretto in questa versione di DCOM95.
Assenza di risposta del desktop durante le negoziazioni del protocollo
RPC
Nelle versioni precedenti di DCOM95 non venivano visualizzati messaggi
durante le negoziazioni di protocolli RPC. In alcuni casi, se l'utente
avviava un'applicazione mentre venivano negoziati i protocolli RPC, il
computer sembrava non rispondere. Dopo 30 secondi, veniva ripresa
l'elaborazione dei messaggi. Questo tipo di risposta Φ stato corretto
nell'ultima versione di DCOM95 e le applicazioni possono essere
avviate durante la negoziazione dei protocolli RPC.
Assenza di risposta del desktop durante l'avvio di una nuova
applicazione
Il protocollo RPC crea una finestra nascosta nell'MTA
(Multiple-Threaded Apartment), che non gestisce i messaggi richiesti
mediante DCOM.Quando viene avviata una nuova applicazione dal desktop,
Windows notifica questo evento inviando un messaggio a tutti gli altri
handle di finestre e resta in attesa di una risposta. Nelle versioni
precedenti di DCOM95 la finestra RPC nascosta non forniva alcuna
risposta, provocando il blocco di Windows. In questa versione di
DCOM95 il problema Φ stato risolto e la finestra RPC non blocca pi∙ il
desktop quando vengono avviate nuove applicazioni.
Danneggiamento dell'heap in presenza di pi∙ indirizzi IP
In alcune situazioni se veniva avviata una versione precedente di
DCOM95 su un computer con pi∙ di un indirizzo IP, il buffer degli
indirizzi IP risultava sovraccaricato, provocando il danneggiamento
dell'heap. Questo problema Φ stato risolto nell'ultima versione di
DCOM95.
Utilizzo del primo indirizzo IP utile
Se si avviava una versione precedente di DCOM95 su un computer dotato
di due schede di rete e quindi di due indirizzi IP, ciascuno assegnato
a una scheda diversa, DCOM95 utilizzava soltanto una scheda di rete.
In questa versione di DCOM95, se il primo indirizzo non Φ adatto,
viene utilizzato il secondo.
Utilizzo di pi∙ indirizzi IP con RPC
Nell'esecuzione di una chiamata di procedura remota (RPC, Remote
Procedure Call) a un computer con pi∙ indirizzi IP, verranno provati
altri indirizzi IP se la connessione con il primo non riesce.
Sintassi di percorso aggiuntiva supportata dai moniker di file
I moniker di file ora possono essere creati senza considerare il
formato <dirinizio><percorsorelativo>, ad esempio
"C:\bug\bug\..\..\foo.jpg". In DCOM95 1.1 erano consentiti soltanto
percorsi relativi, ad esempio "..\..\foo.jpg", o assoluti,
"C:\foo.jpg".
Errore di protezione generale durante lo scaricamento della libreria
Oleaut32.dll
Nelle versioni precedenti di DCOM95 si verificava un errore di
protezione generale quando veniva scaricata la libreria Oleaut32.dll
prima di una chiamata a CoUninitialize. Questa situazione si
verificava molto spesso quando un'applicazione VB creava un controllo
collegato in modo statico alla libreria Oleaut32.dll, quindi lo
rilasciava prima di effettuare la chiamata a CoUninitialize. Questo
errore di protezione generale Φ stato risolto nell'ultima versione di
DCOM95.
Marshaling e unmarshaling di tipi in Visual Basic
╚ stato risolto il problema del marshaling e dell'unmarshaling di
alcuni tipi di dati Visual Basic. Ora Φ possibile utilizzare parametri
di matrice di dimensioni superiori ai 64 KB. Delle strutture definite
mediante alias del tipo viene ora effettuato correttamente il
marshaling e l'unmarshaling.
Troppe eliminazioni di atomi in OleUninitialize
Questo problema era stato evidenziato nelle applicazioni che chiamano
OleInitialize e OleUninitialize pi∙ volte. Durante l'inizializzazione,
OLE aggiunge numerosi atomi per l'RPC DDE. Se sono giα stati aggiunti
atomi da un altro thread, non ne vengono aggiunti altri. Tuttavia,
durante la fase di fine inizializzazione, gli atomi vengono sempre
eliminati e gli handle non vengono annullati. Di conseguenza, nel
momento in cui veniva effettuata una nuova chiamata a OleInitialize,
gli handle precedenti continuavano a essere presenti sebbene gli atomi
fossero stati giα eliminati e non fosse previsto di aggiungernealtri
da OLE. Tutti gli atomi OLE venivano invalidati dopo numerose chiamate
a OleInitialize e OleUninitialize. Il problema Φ stato risolto in
questa versione di DCOM95.
Arresto corretto dei server ADO
Active Data Objects (ADO) utilizza i moniker di puntatore per avviare
un processo server. Le versioni precedenti di DCOM95 presentavano un
problema relativo al numero di riferimenti del moniker di puntatore,
per i quali venivano creati moniker di puntatore con un numero di
riferimento iniziale di 1 invece di 0. Di conseguenza, il numero di
riferimento del moniker di puntatore non veniva mai riportato a zero e
il moniker non veniva rilasciato, rendendo impossibile l'arresto dei
server ADO anche dopo il rilascio dell'ultimo puntatore. Il problema Φ
stato risolto in questa versione di DCOM95.
Funzionamento di CoCreateInstance con un proprio nome DNS
Nelle versioni precedenti di DCOM95 la chiamata a CoCreateInstance con
il nome assoluto del computer locale non aveva esito positivo. Questo
problema Φ stato risolto nella versione corrente di DCOM95 e ora
CoCreateInstance crea un'istanza sul computer locale.
Commit lento sull'area di memorizzazione principale per file composti
molto ampi
Nelle versioni precedenti di DCOM95 il commit sull'area di
memorizzazione principale aperto nella modalitα STGM_TRANSACTED
rallentava enormemente al crescere dei file composti, ad esempio 400
MB. I limiti della tabella di pagina interna sono stati aumentati e
questo non costituisce pi∙ un problema.
Esportazione di oggetti da un MTA ricreato
Nelle versioni precedenti di DCOM95 un server non era in grado di
esportare un oggetto da un MTA (Multi-Threaded Apartment) se questo
veniva creato per la prima volta nel processo. Questo problema Φ stato
risolto. Se ora un server crea un MTA, lo distrugge e subito dopo ne
crea uno nuovo; in questo modo, Φ possibile esportare oggetti
dall'MTA.
Istanze multiple di eseguibili di Visual Basic 4
In DCOM95 versione 1.1 se venivano avviate pi∙ istanze dello stesso
eseguibile di Visual Basic 4, quindi venivano chiuse in un ordine
diverso da quello indicato dal metodo LIFO (Last-In First-Out),
l'ultimo exe veniva bloccato. Una situazione analoga si verificava con
i moduli di posta elettronica di Microsoft Exchange. Questo problema Φ
stato risolto nell'ultima versione di DCOM95. Adesso Φ possibile
chiudere gli exe di Visual Basic 4 in qualsiasi ordine.
Caratteri estesi in nomi file di Visual Basic
Se a un modulo o a una classe Visual Basic venivano assegnati nomi con
caratteri estesi di una determinata lingua, il file corrispondente
poteva non essere aperto sui computer configurati con impostazioni
locali diverse. Questo problema Φ stato risolto.
III. Problemi noti
-----------------
Corel WordPerfect Suite 7: errore di pagina non valida durante
l'installazione
Se si installa Corel WordPerfect Suite 7 in un sistema Windows 95 con
DCOM95 in esecuzione, Φ possibile che si verifichi un errore di pagina
non valida in PfOd70.pfc durante l'installazione. Se si verifica
questo errore, chiudere la corrispondente finestra di messaggio.
L'installazione dovrebbe continuare regolarmente.
Microsoft Access95: mancata esecuzione della replica dei database
Se si prova a replicare un database Access mediante Microsoft Access
95 su computer sui quali Φ installato DCOM95, Φ possibile che venga
visualizzato il seguente messaggio di errore:
Impossibile trovare o inizializzare la DLL Msjtrclr. Operazione non
completata.
Questo Φ un problema di Microsoft Access 95. ╚ possibile ovviarlo
scrivendo un programma che utilizzi il modello di oggetti di Access
invece dello strumento di replica oppure utilizzando Sincronia file
per la replica. Questo problema non si verifica in Microsoft Access
97.
WordPerfect
Se in un documento WordPerfect viene richiamato un foglio di calcolo
di Corel e tale foglio a sua volta richiama un altro oggetto, ad
esempio una bitmap, Φ possibile che venga visualizzato un messaggio di
avviso in cui si notifica che viene persa la connessione alla rete se
si chiude l'oggetto pi∙ interno. Possono essere visualizzati fino a
quattro o cinque messaggi simili. Tutti questi avvisi non
costituiscono un problema. ╚ sufficiente chiudere le relative finestre
e continuare.
I client MTA che utilizzano le routine di conversione BSTR possono
bloccare i messaggi DDE
Le routine di conversione BSTR per l'automazione, ad esempio
BstrFromR4, creano finestre nascoste per facilitare la conversione dei
tipi. Queste finestre non gestiscono la coda di messaggi di Windows.
Se viene creata una di queste finestre in un client MTA, Φ possibile
che vengano bloccati i messaggi DDE. Secondo il modello di
programmazione MTA, il thread del client non deve necessariamente
gestire la coda di messaggi. In caso contrario, questa finestra di
livello superiore provoca il blocco della trasmissione globale dei
messaggi.
Questa situazione pu≥ essere risolta in due modi: chiamando le routine
di conversione BSTR da un client STA (Single-Threaded Apartment)
oppure adeguando l'MTA del client a thread STA. Un thread STA deve
necessariamente gestire la coda di messaggi. Se il thread viene
bloccato in un handle win32, deve chiamare la funzione
MsgWaitForMultipleObjects per distribuire contemporaneamente i
messaggi di Windows.
I nomi di percorso delle DLL pi∙ lunghi di 127 caratteri provocano
degli errori
Se si registra una DLL con un nome di percorso di 128 caratteri o
superiore,la registrazione avrα esito positivo, ma CoCreateInstance o
CoGetClassObjectrestituiranno un errore (REGDB_E_CLASSNOTREG) quando
si accede a un oggetto supportato da tale DLL.
IV. Differenze con DCOM per Windows NT
---------------------------------------
Funzioni di protezione di DCOM95
La funzionalitα di base e l'interfaccia per la programmazione di
applicazioni (API) di DCOM95 sono identiche sia in Windows 95 sia in
Windows NT 4.0/5.0. Alcune funzioni relative alla protezione sono
tuttavia diverse a causa delle diverse infrastrutture di protezione
dei sistemi operativi. Si consiglia di utilizzare le impostazioni di
protezione predefinite del sistema in uso, inoltre Φ necessario
attivare la protezione "a livello utente" nel caso di condivisione del
file system. Per ulteriori informazioni, fare riferimento a quanto
illustrato di seguito.
I servizi che seguono possono essere utilizzati in sostituzione delle
impostazioni di protezione predefinite:
* CoInitializeSecurity
* CoQueryAuthenticationService
* CoQueryProxyBlanket
* CoSetProxyBlanket
* CoQueryClientBlanket
* Interfaccia IClientSecurity
* Interfaccia IServerSecurity
Tuttavia, alcune funzioni di DCOM per Windows NT non sono disponibili
in Windows 95 a causa di differenze nell'infrastruttura di protezione
di Windows 95.
In particolare, Φ da tenere in considerazione la mancanza di funzioni
di protezione nell'API Win32, ad esempio la possibilitα di creare file
ACL (Access Control List, Elenco di controllo di accesso), e della
funzione AccessCheck, cos∞ come la mancanza di un contesto di
sicurezzaassociato ai token di thread e di processo. Windows 95 di per
sΘ non supporta queste funzioni o costrutti. Per questo motivo, DCOM95
non supporta la rappresentazione (in modo specifico, le funzioni di
guida CoImpersonateClient e CoRevertToSelf nell'interfaccia
IServerSecurity), che si basa sulla protezione a livello di token di
thread e di processo in Windows NT 4.0. La rappresentazione viene
comunemente utilizzata per controllare automaticamente l'accesso a
risorse di sistema limitate, ad esempio il file system, la rete e
altri processi. Queste risorse non sono limitate in Windows 95.
DCOM95, tuttavia, offre ai programmatori diversi oggetti di guida che
consentono una funzionalitα ACL e un controllo dell'accesso, che
possono essere utilizzati per controllare in modo esplicito l'accesso
di client remoti alle risorse di sistema, alle risorse definite
dall'utente o ai dati. Questi oggetti guida vengono forniti
dall'oggetto di sistema CLSID_DCOMAccessControl, che implementa
l'interfaccia IAccessControl.
IAccessControl va utilizzato per gestire le autorizzazioni relative
alla protezione in modo programmatico, quando si gestisce la
portabilitα tra Windows 95/98 e Windows NT. L'oggetto
CLSID_DCOMAccessControl Φ disponibile in tutte le versioni di DCOM95 e
in Windows NT 4.0 con Service Pack 2 o versione successiva. Per
ulteriori informazioni sull'oggetto IAccessControl, fare riferimento
alla documentazione relativa all'SDK della piattaforma.
Protezione dell'avvio e dell'accesso
In DCOM95 non Φ possibile controllare l'avvio di codice della
classeserver, perchΘ non Φ supportata la funzione di avvio dei server.
Per poter connettere i client remoti a server o a classi e consentire
loro di poterli utilizzare, Φ necessario che i server e le classi
siano giα attivi.
DCOM95 supporta la capacitα di connettersi a classi e server giα in
esecuzione. La protezione dell'accesso Φ supportata mediante la chiave
del registro di configurazione \APPID\{.}\AccessPermissions ed Φ
regolata mediante l'utilitα DCOMCNFG o in fase di installazione del
codice server. Gli utenti non autenticati potranno utilizzare i server
se la classe viene configurata per supportare connessioni senza
autenticazione (attraverso strumenti di configurazione statici oppure
dinamicamente attraverso la funzione CoInitializeSecurity). ╚
possibile creare elenchi di controllo di accesso arbitrari per
definire gli utenti e i gruppi che possono accedere a determinati
servizi.
Livelli di autenticazione
I client DCOM95 possono effettuare chiamate DCOM utilizzando qualsiasi
livello di autenticazione. I server o i client DCOM95 che ricevono
callback possono accettare chiamate DCOM soltanto utilizzando i
livelli di autenticazione RPC_C_AUTHN_LEVEL_NONE o
RPC_C_AUTHN_LEVEL_CONNECT.
Trasmissioni
DCOM95 supporta soltanto connessioni di tipo TCP. Se non Φ installato
il protocollo TCP/IP, DCOM95 non sarα in grado di supportare il COM
tra macchine.
Impostazioni del registro di configurazione
DCOM95 stabilisce le seguenti chiavi del registro di configurazione in
HKEY_LOCAL_MACHINE\Software\Microsoft\OLE:
EnableDCOM (valore predefinito = "Y"). Abilita DCOM sul computer in
uso. Se impostato su "N", il computer non pu≥ effettuare la
connessione o attivare oggetti su computer remoti e questi ultimi non
possono connettersi a oggetti presenti sul computer locale.
L'impostazione di questo valore su "Y" consente la connessione come
client a oggetti remoti (come nel caso di EnableRemoteConnect='N',
riportato di seguito) o una connessione completa client/server (come
nel caso di EnableRemoteConnect='Y', riportato di seguito).
EnableRemoteConnect (valore predefinito = "N"). Abilita i server COM
per il supporto dei client remoti. Se impostato su "Y", questo valore
consente di passare i riferimenti alle interfacce su oggetti locali a
client remoti e di connettere i client remoti a oggetti in esecuzione.
Se il valore viene impostato su "N", il computer pu≥ connettersi agli
oggetti remoti ma non pu≥ agire da server: infatti, al computer non
viene concessa la possibilitα di connettersi a oggetti in esecuzione.
Inoltre, viene definita la seguente chiave del registro di
configurazione in HKEY_CLASSES_ROOT\CLSID:
{bdc67890-4fc0-11d0-a805-00aa006d2ea4}\InstalledVersion. Contiene il
numero di versione di DCOM95 nel formato "a,b,c,d". Questo valore pu≥
essere utilizzato da Internet Component Download per stabilire se
DCOM95 Φ installato. Questo valore viene aggiunto al registro di
configurazionedurante l'installazione e non deve essere modificato.
Utilizzo di Windows 95 come host server remoto
Windows 95 pu≥ essere considerato un host server remoto, con le
seguenti eccezioni:
* Non Φ in grado di avviare le applicazioni. PerchΘ un client
possa connettersi, il processo server deve essere giα in esecuzione.
* Se sono richieste connessioni protette, il server (e in caso
di callback, il client) deve disporre di un controllo dell'accesso a
livello utente attraverso il nome del provider di protezione
impostato.
* Il valore del registro di configurazione "EnableRemoteConnect"
deve essere impostato su "Y".
Tutti i test funzionali condotti su DCOM95 sono stati effettuati
utilizzando un provider della protezione di dominio di Windows NT. ╚
possibile che si verifichino dei problemi se si utilizzano altri
provider di protezione.
Per stabilire un controllo dell'accesso a livello utente, Φ necessario
che sia installato il file Filesec.vxd. In genere, questo file viene
installato nei computer che eseguono Windows 95 quando si installa il
servizio di condivisione file e stampa.
Per abilitare il controllo dell'accesso a livello utente, fare doppio
clic sull'icona Rete nel Pannello di controllo, scegliere la scheda
Controllo di accesso, selezionare l'opzione Controllo di accesso a
livello utente e immettere il nome del dominio di protezione. Questa
operazione pu≥ influire sulla modalitα di condivisione delle directory
in rete dal proprio computer; per ulteriori informazioni, vedere la
documentazione in linea. Se non viene visualizzata la scheda Controllo
di accesso nel pannello di configurazione della rete, Φ necessario
installare un servizio client di rete. Fare clic sul client di rete,
specificando nell'indice della Guida in linea la voce relativa
all'installazione di un client di rete.
V. Ridistribuzione
-----------------
Per informazioni sulla ridistribuzione di DCOM95, leggere attentamente
le indicazioni contenute nel Contratto di Licenza con l'utente finale
(license.txt).
VI. Supporto tecnico e risorse aggiuntive
-----------------------
Servizio Supporto Tecnico Clienti
Per qualsiasi domanda riguardante un prodotto Microsoft:
Consultare la documentazione ed altro materiale stampato incluso nella confezione del prodotto.
Consultare la Guida in linea.
Consultare i file LEGGIMI presenti nei dischi del prodotto. Questi file contengono informazioni generali divenute disponibili dopo la stampa dei manuali.
Consultare le informazioni tecniche disponibili su Internet allÆindirizzo http://www.microsoft.com/italy/support/
Se non si trova una soluzione, Φ possibile ricevere informazioni su come ottenere assistenza per i prodotti contattando la filiale Microsoft del proprio paese.
Servizi di supporto Microsoft
I servizi di supporto Microsoft, ove disponibili, offrono unÆampia gamma di scelte e accesso ad un supporto tecnico completo e di alta qualitα. Microsoft riconosce che le esigenze di supporto variano da utente a utente, per questo Microsoft consente di scegliere lÆassistenza pi∙ adatta alle proprie esigenze, con opzioni che vanno dai servizi accessibili via Internet a programmi di assistenza annuale.
I servizi di supporto Microsoft sono soggetti ai prezzi, termini e condizioni Microsoft validi in ogni paese al momento in cui un servizio viene usato e sono soggetti a cambiamenti senza preavviso.
Chiamare la filiale Microsoft
Prima di chiamare, accertarsi di avere a portata di mano la documentazione del prodotto e di trovarsi in prossimitα del computer. Potrebbe inoltre essere necessario fornire le seguenti informazioni:
Il numero di versione del prodotto Microsoft utilizzato e il numero di serie, se disponibile.
Il tipo di hardware di cui si dispone, compreso lÆhardware di rete, se esistente.
Il sistema operativo in uso.
Il contenuto esatto dei messaggi visualizzati.
La descrizione dellÆoperazione che si stava eseguendo quando si Φ verificato il problema.
Il modo in cui si Φ tentato di risolvere il problema.
Microsoft fornisce un servizio gratuito di assistenza tecnica telefonica, riservato agli utenti registrati per un periodo limitato, su tutte le problematiche di installazione e sulle funzionalitα di pi∙ frequente utilizzo. Chi acquista un prodotto Microsoft pu≥ avvalersi di tale servizio telefonando al numero 02 - 70 398 398. Informazioni relative ad altre forme di supporto tecnico si ottengono telefonando al Servizio Clienti che risponde allo stesso numero.